/*
 *  Copyright (C) 2011 glauco
 * 
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 * 
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.balisunrise.components;

import java.util.Properties;

/**
 *
 * @author glauco
 */
public class ComponentProperties {

    /* PROPRIEDADES PARA UTILIZAR NOS CAMPOS DAS ENTIDADES */
    public static final String UPPER = "upper";
    public static final String LINES = "lines";
    public static final String MASK = "mask";
    public static final String INPUT_VERIFIER = "inputVerifier";
    public static final String PRECISION = "precision";
    public static final String LENGTH = "length";
    public static final String NEGATIVES = "negatives";
    public static final String GROUPING_SEPARATOR = "groupingSeparator";
    public static final String TEMPORAL = "temporal";
    public static final String NULL_SELECTION = "nullSelection";
    
    /* VALORES PARA PROPRIEDADE TEMPORAL */
    public static final String TEMPORAL_TYPE_DATE = "DATE";
    public static final String TEMPORAL_TYPE_TIME = "TIME";
    public static final String TEMPORAL_TYPE_TIMESTAMP = "TIMESTAMP";

    /**
     * Retorna o Valor de uma propriedade.<br>
     * O Valor retornado será um inteiro.<br>
     * Caso não foi encontrado a propriedade é retornado o valor padrão.<br>
     * Caso o valor da propriedade não seja um inteiro é retornado o valor
     * padrão.<br>
     * Caso o valor for interio e igual a zero é retornado o valor padrão.
     * @param props Mapa de Propriedades.
     * @param key Nome da propriedade.
     * @param defVal Valor Padrão.
     * @return Um valor inteiro.
     */
    public static int getInt(Properties props, String key, int defVal){

        if (props == null)
            return defVal;

        Object o = props.get(key);

        if(o == null)
            return defVal;

        if(!(o instanceof Integer))
            return defVal;

        Integer val = (Integer) o;

        if (val == 0)
            return defVal;

        return val;
    }

    /**
     * Retorna o Valor de uma propriedade.<br>
     * O Valor retornado será um boolean.<br>
     * Caso não foi encontrado a propriedade é retornado o valor padrão.<br>
     * Caso o valor da propriedade não seja um boolean é retornado o valor
     * padrão.
     * @param props Mapa de Propriedades.
     * @param key Nome da propriedade.
     * @param defVal Valor Padrão.
     * @return Um valor boolean.
     */
    public static boolean getBoolean(Properties props, String key, boolean
            defVal){

        if (props == null)
            return defVal;

        Object o = props.get(key);

        if(o == null)
            return defVal;

        if(!(o instanceof Boolean))
            return defVal;

        Boolean val = (Boolean) o;

        return val;
    }

    /**
     * Retorna o Valor de uma propriedade.<br>
     * O Valor retornado será uma String.<br>
     * Caso não foi encontrado a propriedade é retornado o valor padrão.<br>
     * Caso o valor da propriedade não seja uma String é retornado o valor
     * padrão.<br>
     * Caso o valor for uma String vazia é retornado o valor padrão.
     * @param props Mapa de Propriedades.
     * @param key Nome da propriedade.
     * @param defVal Valor Padrão.
     * @return Um valor inteiro.
     */
    public static String getString(Properties props, String key, String defVal){

        if (props == null)
            return defVal;

        Object o = props.get(key);

        if(o == null)
            return defVal;

        if(!(o instanceof String))
            return defVal;

        String val = (String) o;

        if(val.length() == 0)
            return defVal;

        return val;
    }
}
